﻿//上传图片
// 全局对象，不同function使用传递数据
var imgFile = {};
//当前图片容器
var imgWrap;

function handleInputChange(obj) {
	// 获取当前选中的文件
	var file = obj.files[0];
	imgWrap = $(obj).parent().find('.img-wrap');
	var imgMasSize = 1024 * 1024 * 10; // 10MB

	// 检查文件类型
	if(['jpeg', 'png', 'gif', 'jpg'].indexOf(file.type.split("/")[1]) < 0) {
		// 自定义报错方式
		alert("文件类型仅支持 jpeg/png/gif！");
		return;
	}

	// 文件大小限制
	if(file.size > imgMasSize) {
		// 文件大小自定义限制
		alert("文件大小不能超过10MB！");
		return;
	}

	// 判断是否是ios 不需要了ios也压缩
	/*if(!!window.navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
		// iOS
		transformFileToFormData(file);
		return;
	}*/

	// 图片压缩之旅
	transformFileToDataUrl(file);
}
// 将File append进 FormData 不压缩直接发送到后台
function transformFileToFormData(file) {
	var formData = new FormData();
	// 自定义formData中的内容
	// type
	formData.append('type', file.type);
	// size
	formData.append('size', file.size || "image/jpeg");
	// name
	formData.append('name', file.name);
	// lastModifiedDate
	formData.append('lastModifiedDate', file.lastModifiedDate);
	// append 文件
	formData.append('file', file);
	// 上传图片
	uploadImg(formData);
}
// 将file转成dataUrl
function transformFileToDataUrl(file) {
	var imgCompassMaxSize = 200 * 1024; // 超过 200k 就压缩

	// 存储文件相关信息
	imgFile.type = file.type || 'image/jpeg'; // 部分安卓出现获取不到type的情况
	imgFile.size = file.size;
	imgFile.name = file.name;
	imgFile.lastModifiedDate = file.lastModifiedDate;

	// 封装好的函数
	var reader = new FileReader();

	// file转dataUrl是个异步函数，要将代码写在回调里
	reader.onload = function(e) {
		var result = e.target.result;
		compress(result, processData, false); // 图片不压缩
		/*if(result.length < imgCompassMaxSize) {
			compress(result, processData, false); // 图片不压缩
		} else {
			compress(result, processData, true); // 图片压缩
		}*/
	};

	reader.readAsDataURL(file);
}
// 使用canvas绘制图片并压缩
function compress(dataURL, callback, shouldCompress) {
	var img = new window.Image();

	img.src = dataURL;

	img.onload = function() {
		var canvas = document.createElement('canvas');
		var ctx = canvas.getContext('2d');
		//设置 压缩后的宽度 暂定400
		var afterWidth = 400;
		canvas.height = afterWidth * img.height / img.width;
		canvas.width = afterWidth;

		ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

		if(shouldCompress) {
			compressedDataUrl = canvas.toDataURL(imgFile.type, 0.2);
		} else {
			compressedDataUrl = canvas.toDataURL(imgFile.type, 1);
		}
		//压缩完 展示
		$(imgWrap).html('<img src="' + compressedDataUrl + '" />')
		callback(compressedDataUrl);
	}
}

function processData(dataURL) {
	/*// 这里使用二进制方式处理dataUrl
	var formData = new FormData();
	// dataURL 直接上传base64
	formData.append('dataURL', dataURL);
	// name 文件名 用不着可以删
	formData.append('name', imgFile.name);
	// lastModifiedDate 图片修改时间 用不着可以删
	formData.append('lastModifiedDate', imgFile.lastModifiedDate);*/
	//上传
	uploadImg(dataURL);
}
// 上传图片 
function uploadImg(dataURL) {
	$.ajax({　　
		type: "GET", //用POST方式传输
		　　dataType: "JSON", //数据格式:JSON
		　　url: '../../ajax_tpl/success.js', //目标地址
		　　data: {
			dataURL: dataURL
		},
		　　error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert('上传失败');
		},
		　　success: function(msg) {
			//alert(msg.code)
		}
	});
}